﻿/*=========================================================================
  Program:   pangu
  Module:    MeshDictNodeName.h
  Author:    huan.liu

  Copyright (c) CQAI
  All rights reserved.

 * @brief  define meshdict node name
=========================================================================*/
#pragma once

#include <string>
#include <unordered_map>

enum ObjectType
{
	UNKNOWN = -1,
	BOX = 0,
	CONE = 1,
	SPHERE = 2,
	LINE = 3
};
const std::unordered_map<std::string, enum ObjectType> ObjectRefinements 
{ 
	{ "box", BOX },
	{ "cone", CONE},
	{ "sphere", SPHERE},
	{ "line", LINE}
};
enum GeometryType
{
  EDGE = 0,
  SURFACE = 1,
};
const std::unordered_map<std::string, enum GeometryType> GeometryRefinements 
{ 
	{ "edge", EDGE },
	{ "surface", SURFACE},
};



//surface file
const std::string name_surfaceFile = "surfaceFile";

//max cell size
const std::string name_maxCellSize = "maxCellSize";

//local refinement
const std::string name_localRef = "localRefinements";
const std::string name_cellSize = "cellSize";
const std::string name_refinementLevels = "refinementLevels";

//object refinement
const std::string name_objRef = "objectRefinements";
const std::string name_type = "type";
/*******generalsetting*******/
const std::string name_x = "x";
const std::string name_y = "y";
const std::string name_z = "z";
const std::string name_refThickness = "refThickness";
/*******box*******/
const std::string name_box_center = "box_center";
const std::string name_lengthX = "lengthX";
const std::string name_lengthY = "lengthY";
const std::string name_lengthZ = "lengthZ";
/*******sphere*******/
const std::string name_sphere_center = "sphere_center";
const std::string name_sphere_radius = "sphere_radius";
/*******cone*******/
const std::string name_cone_point0 = "cone_point0";
const std::string name_cone_point1 = "cone_point1";
const std::string name_cone_radius0 = "cone_radius0";
const std::string name_cone_radius1 = "cone_radius1";
/*******line*******/
const std::string name_line_point0 = "line_point0";
const std::string name_line_point1 = "line_point1";

//geometry refinement
const std::string name_geoRef = "geometryRefinements";
const std::string name_geo_type = "geo_type";
const std::string name_geoInputName = "geo_input_name";

//boundary layers
const std::string name_boundaryLayers = "boundaryLayers";
const std::string name_nLayers = "nLayers";
const std::string name_thicknessRatio = "thicknessRatio";
const std::string name_maxFirstLayerThikness = "maxFirstLayerThikness";



